package com.wn.service.impl;

import com.wn.dao.AreaDao;
import com.wn.entity.Area;
import com.wn.service.AreaService;
import com.wn.utils.Rsp;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.util.List;

/**
 * (Area)表服务实现类
 *
 * @author makejava
 * @since 2020-10-24 11:34:31
 */
@Service("areaService")
public class AreaServiceImpl implements AreaService {
    @Resource
    private AreaDao areaDao;

    /**
     * 通过ID查询单条数据
     *
     * @param keyid 主键
     * @return 实例对象
     */
    @Override
    public Area queryById(Integer keyid) {

        return this.areaDao.queryById(keyid);
    }

    @Override
    public Rsp queryByLevel() {
        if (StringUtils.isEmpty(this.areaDao.queryByLevel())){
            return Rsp.fail();
        }else {
            return Rsp.success(this.areaDao.queryByLevel());
        }

    }

    @Override
    public Rsp queryByParentCode(Integer id) {
        if (StringUtils.isEmpty(this.areaDao.queryByParentCode(id))){
            return Rsp.fail();
        }else {
            return Rsp.success(this.areaDao.queryByParentCode(id));
        }
    }

    @Override
    public Rsp queryAll(Area area){
        if (StringUtils.isEmpty(this.areaDao.queryAll(area))){
            return Rsp.fail();
        }else {
            return Rsp.success(this.areaDao.queryAll(area));
        }

    }


    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    @Override
    public List<Area> queryAllByLimit(int offset, int limit) {
        return this.areaDao.queryAllByLimit(offset, limit);
    }

    /**
     * 新增数据
     *
     * @param area 实例对象
     * @return 实例对象
     */
    @Override
    public Area insert(Area area) {
        this.areaDao.insert(area);
        return area;
    }

    /**
     * 修改数据
     *
     * @param area 实例对象
     * @return 实例对象
     */
    @Override
    public Area update(Area area) {
        this.areaDao.update(area);
        return this.queryById(area.getKeyid());
    }

    /**
     * 通过主键删除数据
     *
     * @param keyid 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer keyid) {
        return this.areaDao.deleteById(keyid) > 0;
    }
}